package com.sc.nft.service;


import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sc.nft.entity.MallBill;
import com.sc.nft.entity.dto.MallBillAdminPageDTO;
import com.sc.nft.entity.dto.MallOrderBillAdminExcelDTO;
import com.sc.nft.entity.dto.MallOrderBillAdminPageDTO;
import com.sc.nft.entity.vo.AuditBillVO;
import com.sc.nft.entity.vo.MallBillAdminPageVO;
import com.sc.nft.entity.vo.MallOrderBillAdminPageVO;
import com.sc.nft.enums.MallBillStatusEnum;

import java.util.Date;

/**
 * <p>
 * 商城对账单 服务类
 * </p>
 *
 * @author ligen
 * @since 2024-01-17
 */
public interface MallBillService {

    /**
     * 获取对账单
     *
     * @param id
     * @return
     */
    MallBill getById(Long id);

    /**
     * 获取对账单列表
     *
     * @param mallBillAdminPageVO
     * @return
     */
    Page<MallBillAdminPageDTO> getMallBillAdminPageDTO(MallBillAdminPageVO mallBillAdminPageVO);

    /**
     * 获取对账单详情
     *
     * @param id
     * @return
     */
    MallBillAdminPageDTO getDetailById(Long id);

    /**
     * 获取对账单订单
     *
     * @param mallOrderBillAdminPageVO
     * @return
     */
    Page<MallOrderBillAdminPageDTO> getMallOrderBillAdminPageDTOByBillId(MallOrderBillAdminPageVO mallOrderBillAdminPageVO);


    /**
     * 获取导出EXCEL对账单订单
     *
     * @param mallOrderBillAdminPageVO
     * @return
     */
    Page<MallOrderBillAdminExcelDTO> getMallOrderBillAdminExcelDTOByBillId(MallOrderBillAdminPageVO mallOrderBillAdminPageVO);

    /**
     * 修改对账单状态
     *
     * @param id
     * @param statusEnum
     * @return
     */
    void updateStatus(Long id, MallBillStatusEnum statusEnum, String remark, Date billTime);

    /**
     * 账单审核
     *
     * @param auditBillVO
     */
    void audit(AuditBillVO auditBillVO);
}
